.TITLE DRABO .IDENT /04.01/ ; ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; ; COPYRIGHT (C) 1974, 1976, 1979 ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE ; AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS ; SOFTWARE OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR ; OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND ; OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERED. ; ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ; ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL. ; ; ; D. N. CUTLER 11-SEP-73 ; ; ; PREVIOUSLY MODIFIED BY: ; ; T. M. MARTIN ; MODIFIED BY: ; ; B. S. MCCARTHY 16-OCT-84 04.01 ; ; BM319 -- ADDITION OF BOM$ DIRECTIVE ; ; MACRO LIBRARY CALLS ; .MCALL ABODF$ ABODF$ ;DEFINE TASK ABORT CODES ;+ ; **-$DRABO-ABORT TASK ; ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO TERMINATE THE EXECUTION OF A ; SPECIFIED TASK. ; ; DPB FORMAT: ; ; WD. 00 -- DIC(83.),DPB SIZE(3.). ; WD. 01 -- FIRST HALF OF TASK NAME. ; WD. 02 -- SECOND HALF OF TASK NAME. ; ; INPUTS: ; ; R0=ADDRESS OF THE TCB OF THE TASK TO TERMINATE. ; R1=ADDRESS OF THE TASK STATUS WORD OF THE TASK TO TERMINATE. ; R2=ADDRESS OF THE TASK STATUS WORD OF THE CURRENT TASK. ; R3=ADDRESS OF THE LAST WORD IN THE DPB+2. ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK. ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK. ; ; OUTPUTS: (DIRECTIVE STATUS AND PS RETURNED TO TASK) ; ; C=0 IF DIRECTIVE IS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF +1 IS RETURNED. ; C=1 IF DIRECTIVE IS REJECTED. ; DIRECTIVE STATUS OF 'D.RS7' IS RETURNED IF THE SPECIFIED ; TASK IS NOT ACTIVE. ;- $DRABO::TST (R1)+ ;SPECIFIED TASK ACTIVE? BMI 10$ ;IF MI NO TSTB (R1) ;TASK ALREADY BEING TERMINATED? BMI 10$ ;IF MI YES CLR R2 ;INIT SUB-CODE (AB.TYP!AB.NPV=0) BIT #T3.PRV,T.ST3(R5) ;ISSUING TASK PRIVILEGED? BNE 5$ ;IF NE YES, SUB-CODE CORRECT INC R2 ;SET NONPRIV ABORT ATTEMPT (AB.NPV) 5$: MOV R0,R1 ;SET TCB ADDRESS OF TASK TO ABORT MOV #S.CABO,R0 ;SET REASON FOR ABORT CALLR $ABTSK ;ABORT TASK 10$: DRSTS D.RS7 ;SET DIRECTIVE STATUS ;+ ; **-$DRBOM-SIMULATE BREAKPOINT OR ABORT WITH MESSAGE ; ; THIS DIRECTIVE HAS ONE OF TWO POSSIBLE OUTCOMES: ; ; 1) THE DIRECTIVE HAS REQUESTED A BREAKPOINT IF POSSIBLE. ; IF THE CURRENT TASK HAS A SST VECTOR SPECIFIED FOR S.CBPT, ; A SST OCCURS AS IF A BPT HAD BEEN EXECUTED. THIS IS PROVIDED ; FOR COMPATIBILITY WITH TASKS WHICH PREVIOUSLY TRAPPED SYSTEM ; GENERATED BPTS, SUCH AS LOAD OVERLAY FAILURES. ; ; 2) THE TASK DIDN'T REQUEST A BREAKPOINT, OR THERE IS NO SST ; VECTOR FOR BPT. THE TASK IS ABORTED, AND TKTN IS PASSED A ; MESSAGE CODE FOR THE FAILURE (SEE ABODF$ FOR DEFINITIONS). ; IF THE DIRECTIVE SPECIFIES AN UNKNOWN ERROR CODE, S.BUNK ; (UNKNOWN BOM$ ERROR) IS SUBSTITUTED ; ; DPB FORMAT: ; ; WD. 00 -- DIC(211.),DPB SIZE(3.). ; WD. 01 -- ABORT CODE ; WD. 02 -- FLAGS WORD (BIT 0 SET = TRY BREAKPOINT) ; ; INPUTS: ; ; R2=ADDRESS OF THE TASK STATUS WORD OF THE CURRENT TASK. ; R3=ADDRESS OF THE LAST WORD IN THE DPB+2. ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK. ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK. ; ; OUTPUTS: ; ; EITHER A BREAKPOINT IS SIMULATED OR THE TASK IS ABORTED ;- $DRBOM::MOV (R3)+,R1 ;GET SPECIFIED ABORT CODE MOV #S.BUNK,R0 ;ASSUME INVALID CODE SPECIFIED CMP #S.BHI,R1 ;IS CODE VALID BLO 10$ ;IF LO NO, USE S.BUNK INSTEAD INC R1 ;ADJUST CODE UP BY ONE ADD R1,R0 ;AND BIAS BY S.BUNK 10$: BIT #S.BBIF,(R3) ;BREAKPOINT DESIRED? BNE 20$ ;IF NE YES CALLR $ABCTK ;GO ABORT TASK 20$: MOV R0,$TEMP0 ;INDICATE ABORT CODE FOR SSTSR MOV #S.CBPT,2(SP) ;SET SST ABORT CODE MOV #2*2,(SP) ;AND LENGTH AS IF BREAKPOINT MOV R4,R5 ;PUT HEADER ADDRESS IN CORRECT PLACE CALLR $CNBPT ;ISSUE CONDITIONAL BREAKPOINT .END